package com.LeetCode.dp.shares;

import org.junit.Test;

/**
 * 购买股票包含冷冻期
 * 卖出股票后，你无法在第二天买入股票 (即冷冻期为 1 天)。
 */
public class sharesWithFreezing {
    public int maxProfit(int[] prices) {
        if (prices == null || prices.length == 0) return 0;

        int len = prices.length;

        // 第 i 天 , 状态 0 不持有 1 持有 2 冷冻期
        int[][] dp = new int[len][3];

        dp[0][0] = 0;
        dp[0][1] = -prices[0];
        dp[0][2] = 0;

        for(int i = 1; i<len; i++){

            dp[i][0] = Math.max(dp[i-1][2] , dp[i-1][0]);

            dp[i][1] = Math.max(dp[i-1][0] - prices[i] , dp[i-1][1]);

            dp[i][2] = dp[i-1][1] + prices[i];

        }
        //最后可能处于空仓状态，或者冷冻期
        return Math.max(dp[len - 1][0] , dp[len -1][2]);
    }

    @Test
    public void test(){
        int[] prices = {1,2,3,0,2};
        System.out.println(maxProfit(prices));
    }
}
